// #include <assert.h>
// #include <stdio.h>
// #include <stdlib.h>
// #include "windows.h"
//
// typedef struct LinkNode {
//     int data;
//     struct LinkNode* next;
// } LinkNode;
//
// typedef struct LinkList {
//     LinkNode* head;
// } LinkList;
//
// LinkList* LinkInit() {
//     LinkList* list = (LinkList*)malloc(sizeof(LinkList));
//     if (list == NULL) {
//         exit(1);
//     }
//     list->head = (LinkNode*)malloc(sizeof(LinkNode));
//     list->head->next = NULL;
//     return list;
// }
//
// void LinkInsert(LinkList* list, int data) {
//     LinkNode* newNode = (LinkNode*)malloc(sizeof(LinkNode));
//     if (newNode == NULL) {
//         perror("malloc");
//         exit(1);
//     }
//     newNode->data = data;
//     newNode->next = NULL;
//     LinkNode* current = list->head;
//     while (current->next != NULL) {
//         current = current->next;
//     }
//     current->next = newNode;
// }
//
// void printLinkList(LinkList* list) {
//     LinkNode* current = list->head->next;
//     while (current != NULL) {
//         printf("%d ", current->data);
//         current = current->next;
//     }
//     printf("\n");
// }
//
// void FreeLinkList(LinkList* list) {
//     if (list == NULL) {
//         return;
//     }
//     LinkNode* current = list->head;
//     while (current != NULL) {
//         LinkNode* next = current->next;
//         free(current);
//         current = next;
//     }
//     free(list);
// }
//
// int DDD(LinkList* L) {
//     LinkNode* fast=L->head->next;
//     LinkNode* last=L->head->next;
//     while (fast!=NULL&&fast->next!=NULL) {
//         fast=fast->next->next;
//         last=last->next;
//         if(fast==last||fast->next==last) {
//             return 1;
//         }
//     }
//     return 0;
// }
//
// // 主函数示例
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     LinkList* linked_list = LinkInit();
//
//     LinkInsert(linked_list,10);
//     LinkInsert(linked_list,20);
//     LinkInsert(linked_list,30);
//     LinkInsert(linked_list,40);
//     LinkInsert(linked_list,50);
//
//     LinkNode* p=linked_list->head;
//     while (p->next!=NULL) {
//         p=p->next;
//     }
//     p->next=linked_list->head->next->next;
//     int result=DDD(linked_list);
//     if(result==1) {
//         printf("有环\n");
//     }else {
//         printf("无环\n");
//     }
//
//     // 释放内存
//     FreeLinkList(linked_list);
//
//     return 0;
// }
